import request from '@/utils/request'
const localCache = require('@/plugins/cache').default.local;

// 查询部门列表
export function listDept(query) {
  let deptList = localCache.get('deptData');
  if (deptList == null) {
    // 数据为空则请求
    return new Promise((resolve, reject) => {
      request({
        url: '/system/dept/list',
        method: 'get',
        params: query
      }).then(res => {
        localCache.set('deptData', JSON.stringify(res));
        resolve(res);
      }).catch(e => {
        reject(e);
      })
    })
  } else {
    return Promise.resolve(JSON.parse(deptList));
  }
}

// 查询部门列表（排除节点）
export function listDeptExcludeChild(deptId) {
  return request({
    url: '/system/dept/list/exclude/' + deptId,
    method: 'get'
  })
}

// 按部门类型查询部门
export function listDeptByType(param) {
  return request({
    url: '/system/dept/list/',
    method: 'get',
    params: param
  })
}

// 查询部门详细
export function getDept(deptId) {
  return request({
    url: '/system/dept/' + deptId,
    method: 'get'
  })
}

// 查询部门下拉树结构
export function treeselect() {
  return request({
    url: '/system/dept/treeselect',
    method: 'get'
  })
}

// 根据角色ID查询部门树结构
export function roleDeptTreeselect(roleId) {
  return request({
    url: '/system/dept/roleDeptTreeselect/' + roleId,
    method: 'get'
  })
}

// 新增部门
export function addDept(data) {
  return request({
    url: '/system/dept',
    method: 'post',
    data: data
  })
}

// 修改部门
export function updateDept(data) {
  return request({
    url: '/system/dept',
    method: 'put',
    data: data
  })
}

// 删除部门
export function delDept(deptId) {
  return request({
    url: '/system/dept/' + deptId,
    method: 'delete'
  })
}

/**
 * 根据部门名称查询部门列表
 * @param {*} deptNames 
 * @returns 
 */
export function getDeptsByDeptNames(deptNames) {
  return request({
    url: '/system/dept/getDeptsByDeptNames',
    method: 'get',
    params: { deptNames: deptNames }
  })
}

/**
 * 获取部门列表数
 */
export function getDeptList() {
  return request({
    url: '/caac/caacDept/getDepts',
    method: 'get'
  })
}